<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // const promise = new Promise(function(resolve, reject) {   //参数resolve, reject位置不能改变
        //     if (/* 异步接收成功 */){
        //         //调用resolve时将改变promise的结果
        //         resolve(value);
        //     } else {
        //         //调用reject时传入失败结果
        //         reject(error);
        //     }
        // })

        //promise三种状态

        // pending初始
        // new Promise((resolve, reject) => {})
        //输出结果里的[[PromiseState]]: "pending"

        //Fulfilled成功
        // console.log(new Promise((resolve, reject) =>{resolve('hello wrold')}))
        //控制台查看的[[PromiseState]]: "fulfilled"；结果是[[PromiseResult]]: "hello wrold"

        //通过then拿到resolve成功之后的值
        // console.log(new Promise((resolve, reject) =>{resolve('hello world') }).then(val =>{console.log(val)}))
            //输出结果为hello world

        //拒绝状态Rejected
        // console.log(new Promise((resolve, reject) =>{reject('bad code')}))
        // 控制台查看的[[PromiseState]]: "Rejected"；结果是[[PromiseResult]]: "bad code"

        //获取结果Rejected方式1
        // new Promise((resolve, reject) => { 
        //     reject('bad code')
        // }).then(() => {}, (err) => {  //通过.then传递两个函数
        //     console.log(err)
        // })


        //方法二通过catch链式操作
        // new Promise((resolve, reject) => { 
        //     reject('bad code')
        // }).catch(function (err){
        //     console.log(err)
        // })

        //promise状态
        // new Promise((resolve, reject) => {
        //     //此处已经调用reject改变promise状态，所以后面的resolve将不改变promise状态
        //     reject('bad code')
        //     resolve('hello world')
        // }).then(val => { 
        //     console.log(val)
        // }).catch(err => {
        //     console.log(err)
        //     //finally方法：只要promise状态改变就会被调用，并接收一个函数
        // }).finally(() =>{       
        //     console.log('promise状态变更')
        // })
       
        //验证
        // new Promise((resolve, reject) => {
        //     // reject('bad code')
        //     // resolve('hello world')
        // }).finally(() =>{       
        //     console.log('promise状态变更')
        // })
        // //控制台无输出证明finally方法未调用

    </script>
</body>
</html>